package br.bovino.usuario;

import java.util.List;

import br.bovino.usuario.Usuario.Usuarios;

import android.R;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;

public class CadastroUsuario extends ListActivity {
	protected static final int INSERIR_EDITAR = 1;
	protected static final int BUSCAR = 2;
	public static RepositorioUsuario repositorio;
	protected List<Usuario> usuarios;
	
	@Override
	public void onCreate(Bundle icicle){
		super.onCreate(icicle);
		repositorio = new RepositorioUsuario(this);
		atualizarLista();
		//pega a lista de Usuarios e exibe na tela
		usuarios = repositorio.listarUsuarios();
		//adaptador de lista customizado para cada linha de um usuario
		setListAdapter(new UsuarioListAdapter(this, usuarios));
		
	}
	
	public void atualizarLista(){
		//pega a lista de usuario e exibe na tela
		usuarios = repositorio.listarUsuarios();
		//Adaptador de lista customizado para cada linha de um carro
		setListAdapter(new UsuarioListAdapter(this, usuarios));
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu){
		super.onCreateOptionsMenu(menu);
		menu.add(0, INSERIR_EDITAR,0, "Novo").setIcon(R.drawable.btn_plus);
		menu.add(0, BUSCAR,0, "Buscar").setIcon(R.drawable.ic_menu_send);
		return true;
	}
	
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item){
		//clicou no menu
		switch (item.getItemId()){
		case INSERIR_EDITAR:
			//abre a tela com o formulario para adicionar
			startActivityForResult(new Intent(this, EditarUsuario.class), INSERIR_EDITAR);
			break;
		case BUSCAR:
			//abre a tela para buscar o usuario pelo nome
			startActivity(new Intent(this, BuscarUsuario.class));
			break;
		}
		return true;
	}
	
	public void onListenerItemClick(ListView l, View v, int posicao, long id){
		super.onListItemClick(l, v, posicao, id);
		editarUsuario(posicao);
	}
	
	//recupera o id do usuario e abre a tela de edicao
	protected void editarUsuario(int posicao){
		//usuario clicou em algum usuario da lista
		//recupera o usuario selecionado
		Usuario usuario = usuarios.get(posicao);
		//Cria a intent para abrir a tela de editar
		Intent it = new Intent(this, EditarUsuario.class);
		//Passa o id do carro como parametro
		it.putExtra(Usuarios._ID, usuario.id);
		//Abre a tela de edicao
		startActivityForResult(it, INSERIR_EDITAR);
	}
	
	@Override
	protected void onActivityResult(int codigo, int codigoRetorno, Intent it){
		super.onActivityResult(codigo, codigoRetorno, it);
		//Quando a activity EditarUsuario retornar, seja se for para adicionar, atualizar ou excluir vamos atualizar a lista
		if(codigoRetorno == RESULT_OK){
			//atualiza a lista na tela
			atualizarLista();
		}
	}
	
	@Override
	protected void onDestroy(){
		super.onDestroy();
		//fecha o banco
		repositorio.fechar();
	}
	
}
